import { safeData } from 'lj-utils/j'

/*
 * @author: linj
 * @email: 993353454@qq.com
 * @Date: 2021-12-07 14:50:04
 * @description: no
 */
const mixin = {
  methods: {
    /**
     * @description:
     * @param {type} argKey '要赋值的数据下标，相对于this',
     * @param {type} argValue 数据,
     * @return:
     */
    SetKv(argKey, argValue) {
      let temData = safeData(this, argKey)
      if (temData || typeof temData !== 'undefined') {
        // 小程序赋值
        if (Array.isArray(argValue)) {
          safeData(this, argKey, [], true)
        }
        safeData(this, argKey, argValue, true)
      } else {
        console.error(safeData(this, argKey) + '数据' + argKey + '不存在！')
      }
    },
    /**
     * @description: mixin监听数据变动，调用指定函数（主要用于小程序）
     * @param {object} argData{ // key与fn只传其一
     * key: '要赋值的数据下标，相对于this',
     * fn: '要调用的函数名',
     * data: '数据'
     * }
     * @return: no
     */
    ComChange(argData) {
      // console.log(argData)
      if (argData.key) {
        this.SetKv(argData.key, argData.data)
      }
      if (typeof this[argData.fn] === 'function') {
        let [, ...args] = [...arguments]
        this[argData.fn](argData.data, ...args)
      } else if (argData.fn) {
        console.error('函数' + argData.fn + '不存在！')
      }
    },
  },
}
export default mixin
